all repos — caroster @ 52ad6be503528baa3feff0e610b44f0f82ffc2a3

[Octree] Group carpool to your event https://caroster.io

frontend/pages/e/[uuid]/alerts.tsx (view raw)

 1import {PropsWithChildren} from 'react';
 2import Alerts from '../../../containers/Alerts';
 3import EventLayout, {TabComponent} from '../../../layouts/Event';
 4import {
 5  EventByUuidDocument,
 6  EventEntity,
 7  TripAlertDocument,
 8  TripAlertEntity,
 9} from '../../../generated/graphql';
10import pageUtils from '../../../lib/pageUtils';
11
12interface Props {
13  eventUUID: string;
14  announcement?: string;
15  event: EventEntity;
16  tripAlertEntity: TripAlertEntity;
17}
18
19const Page = (props: PropsWithChildren<Props>) => {
20  return (
21    <EventLayout
22      {...props}
23      Tab={AlertsTab}
24      tabProps={{tripAlertEntity: props.tripAlertEntity}}
25    />
26  );
27};
28
29const AlertsTab: TabComponent<Props> = ({
30  event,
31  tripAlertEntity,
32}: {
33  event: EventEntity;
34  tripAlertEntity: TripAlertEntity;
35}) => {
36  return <Alerts event={event} tripAlertEntity={tripAlertEntity} />;
37};
38
39export const getServerSideProps = pageUtils.getServerSideProps(
40  async (context, apolloClient) => {
41    const {uuid} = context.query;
42    const {host = ''} = context.req.headers;
43    let event = null;
44    let tripAlertEntity = null;
45
46    try {
47      const {data} = await apolloClient.query({
48        query: EventByUuidDocument,
49        variables: {uuid},
50      });
51      event = data?.eventByUUID?.data;
52    } catch (error) {
53      return {
54        notFound: true,
55      };
56    }
57
58    try {
59      const {data} = await apolloClient.query({
60        query: TripAlertDocument,
61        variables: {eventId: event.id},
62      });
63      tripAlertEntity = data.eventTripAlert.data;
64    } catch (error) {
65      tripAlertEntity = null;
66    }
67
68    return {
69      props: {
70        eventUUID: uuid,
71        tripAlertEntity,
72        metas: {
73          title: event?.attributes?.name || '',
74          url: `https://${host}${context.resolvedUrl}`,
75        },
76      },
77    };
78  }
79);
80
81export default Page;